var config = require("./api.js");

/**
 * ajax请求
 * @param {*} url 
 * @param {*} params 
 * @param {*} type 
 * @param {*} headerType  数据请求类型
 * @param {*} showLoading 是否显示加载中
 */
function ajaxRequest(url, params = {}, type, headerType, showLoading = false) {
  //token 登录成功后使用新的 否则传一个假的token
  let token = wx.getStorageSync('token');
  let header = {
    'content-type': headerType || 'application/json',
  }
  if (token) {
    header.token = token
  }
  if (showLoading) {
    wx.showNavigationBarLoading()
  }
  return new Promise((resolve, reject) => {
    wx.request({
      url: url,
      data: params,
      method: type,
      header,
      success: function (res) {
        if (res.statusCode === 200) {
          if (res.data.code === -2) {
            console.error(res.data);
            const currentPagePath = getCurrentPageUrl()
        
          }
          if (res.data.code === -1) {
            console.error(res.data);
            wx.showToast({
              title: res.data.msg,
              icon: "none"
            })
          }
          resolve(res.data)
        } else if (res.statusCode == 404) {
          console.error(404, res);
        } else if (res.statusCode == 500) {
          console.error('服务器错误：', res);
          wx.showToast({
            title: '服务器错误，请联系管理员',
            icon: "none"
          })
        } else if (res.statusCode === 502) {
          const currentPagePath = getCurrentPageUrl()
      
        }

      },
      fail: function (res) {
        reject(res)
        wx.showToast({
          title: '网络不畅！请检查网络状况!',
          icon: 'none',
          duration: 2000
        })
      },
      complete: function () {
        wx.hideNavigationBarLoading()
      }
    })
  })

}

/**
 * GET请求
 * @param  url [请求url地址]
 * @param  params [请求发送参数]
 * @param  showLoading 是否显示加载中
 */
function get(url, params = {}, showLoading = false) {
  return ajaxRequest(url, params, 'GET', false, showLoading);
}


/**
 * POST请求
 * @param  url [请求url地址]
 * @param  params [请求发送参数]
 * @param  showLoading 是否显示加载中
 */
function post(url, params = {}, dataType, showLoading = false) {
  return ajaxRequest(url, params, 'POST', dataType || 'application/x-www-form-urlencoded', showLoading);
}

const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : '0' + n
}

/**
 * 加入购物车
 * @param  data [购物请求参数]
 * @param  loginback [登录回调函数]
 * @param  cancelback [点击取消回调函数]
 * @param  failback [请求失败回调函数]
 */
function addCart(data, cancelback, failback) {
  wx.showLoading()
  postHttp(config.addCartUrl, data)
    .then((resData) => {
      wx.hideLoading()
      if (resData.data.code == 1) {
        cancelback && cancelback(resData.data)
      } else if (res.data.code == -10) {

      } else {
        wx.showToast({
          title: resData.data.msg,
          icon: 'none'
        })
      }
    })
    .catch((res) => {
      failback && failback(res);
    })
}

function getCurrentPageUrl() {
  var pages = getCurrentPages() //获取加载的页面
  var currentPage = pages[pages.length - 1] //获取当前页面的对象
  var url = '/' + currentPage.route //当前页面url
  var options = currentPage.options //如果要获取url中所带的参数可以查看options
  //拼接url的参数
  var urlWithArgs = url + '?'
  for (var key in options) {
    var value = options[key]
    urlWithArgs += key + '=' + value + '&'
  }
  urlWithArgs = urlWithArgs.substring(0, urlWithArgs.length - 1)
  return urlWithArgs
}

function toLogin() {
  wx.clearStorage();

}

module.exports = {
  formatTime: formatTime,
  ajaxRequest,
  get,
  post,
  addCart,
  getCurrentPageUrl,
  toLogin,
  fromuid: ''
}